#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main()
{
	pid_t id = fork();
	if (id == -1)
		perror("fork"), exit(1);
	if (id == 0)
	{
		sleep(20);
		exit(10);
	}
	else
	{
		int st;
		int ret = wait(&st);
		if (ret > 0 && (st & 0X7F) == 0)
		{
			// 正常退出
			printf("child exit code:%d\n", (st >> 8) & 0XFF);
		}
		else if (ret > 0)
		{
			// 异常退出
			printf("sig code : %d\n", st & 0X7F);
		}
	}
}

// #include <stdio.h>
// #include <unistd.h>
// #include <stdlib.h>
// #include <sys/types.h>
// #include <sys/wait.h>
//
// void work()
//{
//     int cut = 5;
//     while(cut)
//     {
//         printf("child process-> pid:%d ,ppid:%d ,cut:%d\n",getpid(),getppid(),cut);
//         cut--;
//         sleep(1);
//     }
// }
//
// int main()
//{
//     pid_t id = fork();
//     if(id == 0)
//     {
//         // 子进程
//         work();
//         printf("child process exit\n");
//         exit(1);
//     }
//     else
//     {
//         // 父进程
//         //sleep(8);
//         int status = 0;
//         pid_t rid =  waitpid(id,&status,0);
//         printf("wait success,status=%d\n",status);
//     }
//     //sleep(100);
//     return 0;
// }

// int main()
//{
//     printf("i am a process");
//     sleep(1);
//     _exit(0);
// }
